@@ -0,0 +1,19 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+from __future__ import unicode_literals |
|
| 3 |
+ |
|
| 4 |
+from django.db import models, migrations |
|
| 5 |
+ |
|
| 6 |
+ |
|
| 7 |
+class Migration(migrations.Migration): |
|
| 8 |
+ |
|
| 9 |
+ dependencies = [ |
|
| 10 |
+ ('message', '0006_systemmessageinfo_src'),
|
|
| 11 |
+ ] |
|
| 12 |
+ |
|
| 13 |
+ operations = [ |
|
| 14 |
+ migrations.AlterField( |
|
| 15 |
+ model_name='systemmessageinfo', |
|
| 16 |
+ name='src', |
|
| 17 |
+ field=models.IntegerField(default=0, help_text='\u7cfb\u7edf\u6d88\u606f\u7c7b\u522b', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef')]), |
|
| 18 |
+ ), |
|
| 19 |
+ ] |
@@ -88,7 +88,7 @@ class SystemMessageInfo(CreateUpdateMixin): |
||
| 88 | 88 |
title = models.CharField(_(u'title'), max_length=255, help_text=u'系统消息标题') |
| 89 | 89 |
content = models.TextField(_(u'content'), blank=True, null=True, help_text=u'系统消息内容') |
| 90 | 90 |
url = models.CharField(_(u'url'), max_length=255, blank=True, null=True, help_text=u'系统消息链接') |
| 91 |
- src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'系统消息类别') |
|
| 91 |
+ src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'系统消息类别', db_index=True) |
|
| 92 | 92 |
|
| 93 | 93 |
class Meta: |
| 94 | 94 |
verbose_name = _('systemmessageinfo')
|
@@ -11,27 +11,30 @@ from utils.redis.rversion import delete_guest_entrance_control, set_guest_entran |
||
| 11 | 11 |
|
| 12 | 12 |
|
| 13 | 13 |
class LatestAppInfoAdmin(admin.ModelAdmin): |
| 14 |
- list_display = ('latest_adr_version_code', 'latest_adr_version_name', 'latest_adr_app', 'latest_adr_url', 'latest_ios_version_code', 'latest_ios_version_name', 'latest_ios_url', 'status', 'created_at', 'updated_at')
|
|
| 14 |
+ list_display = ('latest_adr_version_code', 'latest_adr_version_name', 'latest_adr_app', 'latest_adr_url', 'latest_ios_version_code', 'latest_ios_version_name', 'latest_ios_url', 'src', 'status', 'created_at', 'updated_at')
|
|
| 15 |
+ list_filter = ('src', 'status')
|
|
| 15 | 16 |
|
| 16 | 17 |
def save_model(self, request, obj, form, change): |
| 17 | 18 |
obj.save() |
| 18 | 19 |
|
| 19 |
- # 更新安卓下载页面 |
|
| 20 |
- write_to_disk(render_to_string('page/download.tmpl.html', {
|
|
| 21 |
- 'version': obj.latest_adr_version_name, |
|
| 22 |
- }), settings.DOWNLOAD_ADR_PAGE_PATH) |
|
| 20 |
+ if obj.src == LatestAppInfo.PAIAI_USER: |
|
| 21 |
+ # 更新安卓下载页面 |
|
| 22 |
+ write_to_disk(render_to_string('page/download.tmpl.html', {
|
|
| 23 |
+ 'version': obj.latest_adr_version_name, |
|
| 24 |
+ }), settings.DOWNLOAD_ADR_PAGE_PATH) |
|
| 23 | 25 |
|
| 24 |
- # 更新 iOS 下载页面 |
|
| 25 |
- write_to_disk(render_to_string('page/download.tmpl.html', {
|
|
| 26 |
- 'version': obj.latest_ios_version_name, |
|
| 27 |
- }), settings.DOWNLOAD_IOS_PAGE_PATH) |
|
| 26 |
+ # 更新 iOS 下载页面 |
|
| 27 |
+ write_to_disk(render_to_string('page/download.tmpl.html', {
|
|
| 28 |
+ 'version': obj.latest_ios_version_name, |
|
| 29 |
+ }), settings.DOWNLOAD_IOS_PAGE_PATH) |
|
| 28 | 30 |
|
| 29 | 31 |
# 设置最新 APP 信息 |
| 30 |
- set_latest_app() |
|
| 32 |
+ set_latest_app(obj.src) |
|
| 31 | 33 |
|
| 32 | 34 |
|
| 33 | 35 |
class SplashInfoAdmin(admin.ModelAdmin): |
| 34 |
- list_display = ('splash_image', 'spalash_image_airtime', 'spalash_image_deadline', 'status', 'created_at', 'updated_at')
|
|
| 36 |
+ list_display = ('splash_image', 'spalash_image_airtime', 'spalash_image_deadline', 'src', 'status', 'created_at', 'updated_at')
|
|
| 37 |
+ list_filter = ('src', 'status')
|
|
| 35 | 38 |
|
| 36 | 39 |
|
| 37 | 40 |
class FeedbackInfoAdmin(admin.ModelAdmin): |
@@ -0,0 +1,29 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+from __future__ import unicode_literals |
|
| 3 |
+ |
|
| 4 |
+from django.db import models, migrations |
|
| 5 |
+ |
|
| 6 |
+ |
|
| 7 |
+class Migration(migrations.Migration): |
|
| 8 |
+ |
|
| 9 |
+ dependencies = [ |
|
| 10 |
+ ('operation', '0006_feedbackinfo_src'),
|
|
| 11 |
+ ] |
|
| 12 |
+ |
|
| 13 |
+ operations = [ |
|
| 14 |
+ migrations.AddField( |
|
| 15 |
+ model_name='latestappinfo', |
|
| 16 |
+ name='src', |
|
| 17 |
+ field=models.IntegerField(default=0, help_text='\u6700\u65b0\u7248\u6765\u6e90', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef')]), |
|
| 18 |
+ ), |
|
| 19 |
+ migrations.AddField( |
|
| 20 |
+ model_name='splashinfo', |
|
| 21 |
+ name='src', |
|
| 22 |
+ field=models.IntegerField(default=0, help_text='\u542f\u52a8\u9875\u9762\u6765\u6e90', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef')]), |
|
| 23 |
+ ), |
|
| 24 |
+ migrations.AlterField( |
|
| 25 |
+ model_name='feedbackinfo', |
|
| 26 |
+ name='src', |
|
| 27 |
+ field=models.IntegerField(default=0, help_text='\u7528\u6237\u53cd\u9988\u6765\u6e90', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef')]), |
|
| 28 |
+ ), |
|
| 29 |
+ ] |
@@ -23,6 +23,14 @@ def upload_path(instance, old_filename): |
||
| 23 | 23 |
|
| 24 | 24 |
|
| 25 | 25 |
class LatestAppInfo(CreateUpdateMixin): |
| 26 |
+ PAIAI_USER = 0 |
|
| 27 |
+ PAIAI_LENSMAN = 1 |
|
| 28 |
+ |
|
| 29 |
+ SRC = ( |
|
| 30 |
+ (PAIAI_USER, u'拍爱用户端'), |
|
| 31 |
+ (PAIAI_LENSMAN, u'拍爱摄影师端'), |
|
| 32 |
+ ) |
|
| 33 |
+ |
|
| 26 | 34 |
latest_adr_version_code = models.IntegerField(_(u'latest_adr_version_code'), default=0, help_text=u'最新安卓版本号') |
| 27 | 35 |
latest_adr_version_name = models.CharField(_(u'latest_adr_version_name'), max_length=255, blank=True, null=True, help_text=u'最新安卓版本名') |
| 28 | 36 |
latest_adr_app = models.FileField(_(u'latest_adr_app'), upload_to=upload_path, blank=True, null=True, help_text=u'最新版安卓 APP') |
@@ -32,6 +40,8 @@ class LatestAppInfo(CreateUpdateMixin): |
||
| 32 | 40 |
latest_ios_version_name = models.CharField(_(u'latest_ios_version_name'), max_length=255, blank=True, null=True, help_text=u'最新 iOS 版本名') |
| 33 | 41 |
latest_ios_url = models.URLField(_(u'latest_ios_url'), max_length=255, blank=True, null=True, help_text=u'最新版 iOS 链接') |
| 34 | 42 |
|
| 43 |
+ src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'最新版来源', db_index=True) |
|
| 44 |
+ |
|
| 35 | 45 |
class Meta: |
| 36 | 46 |
verbose_name = _('latestappinfo')
|
| 37 | 47 |
verbose_name_plural = _('latestappinfo')
|
@@ -56,9 +66,18 @@ class LatestAppInfo(CreateUpdateMixin): |
||
| 56 | 66 |
|
| 57 | 67 |
|
| 58 | 68 |
class SplashInfo(CreateUpdateMixin): |
| 69 |
+ PAIAI_USER = 0 |
|
| 70 |
+ PAIAI_LENSMAN = 1 |
|
| 71 |
+ |
|
| 72 |
+ SRC = ( |
|
| 73 |
+ (PAIAI_USER, u'拍爱用户端'), |
|
| 74 |
+ (PAIAI_LENSMAN, u'拍爱摄影师端'), |
|
| 75 |
+ ) |
|
| 76 |
+ |
|
| 59 | 77 |
splash_image = models.ImageField(_(u'splash_image'), upload_to=upload_path, blank=True, null=True, help_text=u'启动页面图片') |
| 60 | 78 |
spalash_image_airtime = models.DateTimeField(_(u'spalash_image_airtime'), blank=True, null=True, help_text=u'启动页面图片开始日期') |
| 61 | 79 |
spalash_image_deadline = models.DateTimeField(_(u'spalash_image_deadline'), blank=True, null=True, help_text=u'启动页面图片截止日期') |
| 80 |
+ src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'启动页面来源', db_index=True) |
|
| 62 | 81 |
|
| 63 | 82 |
class Meta: |
| 64 | 83 |
verbose_name = _('splashinfo')
|
@@ -91,7 +110,7 @@ class FeedbackInfo(CreateUpdateMixin): |
||
| 91 | 110 |
|
| 92 | 111 |
user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识') |
| 93 | 112 |
feedback = models.TextField(_(u'feedback'), blank=True, null=True, help_text=u'用户反馈') |
| 94 |
- src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'用户反馈来源') |
|
| 113 |
+ src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'用户反馈来源', db_index=True) |
|
| 95 | 114 |
|
| 96 | 115 |
class Meta: |
| 97 | 116 |
verbose_name = _('feedbackinfo')
|
@@ -18,7 +18,9 @@ def upgrade_api(request): |
||
| 18 | 18 |
:param request: |
| 19 | 19 |
:return: |
| 20 | 20 |
""" |
| 21 |
- latest_app = get_latest_app() |
|
| 21 |
+ src = int(request.POST.get('src', 0))
|
|
| 22 |
+ |
|
| 23 |
+ latest_app = get_latest_app(src) |
|
| 22 | 24 |
|
| 23 | 25 |
if request.iOS: |
| 24 | 26 |
appinfo = {
|
@@ -45,7 +47,9 @@ def splash_api(request): |
||
| 45 | 47 |
:param request: |
| 46 | 48 |
:return: |
| 47 | 49 |
""" |
| 48 |
- splashes = SplashInfo.objects.all() |
|
| 50 |
+ src = int(request.POST.get('src', 0))
|
|
| 51 |
+ |
|
| 52 |
+ splashes = SplashInfo.objects.filter(src=src, status=True) |
|
| 49 | 53 |
splashes = [splash.data for splash in splashes] |
| 50 | 54 |
|
| 51 | 55 |
return response(200, 'Get Splash Success', u'获取最新版信息成功', {
|
@@ -14,16 +14,16 @@ r = settings.REDIS_CACHE |
||
| 14 | 14 |
# 最新 APP 相关 |
| 15 | 15 |
|
| 16 | 16 |
|
| 17 |
-def set_latest_app(): |
|
| 17 |
+def set_latest_app(src=0): |
|
| 18 | 18 |
""" 设置最新 APP 信息 """ |
| 19 | 19 |
try: |
| 20 |
- appinfo = LatestAppInfo.objects.all()[0].data |
|
| 20 |
+ appinfo = LatestAppInfo.objects.filter(src=src)[0].data |
|
| 21 | 21 |
except IndexError: |
| 22 | 22 |
appinfo = {}
|
| 23 |
- r.set(LATEST_APP_INFO, json.dumps(appinfo)) |
|
| 23 |
+ r.set(LATEST_APP_INFO % src, json.dumps(appinfo)) |
|
| 24 | 24 |
return appinfo |
| 25 | 25 |
|
| 26 | 26 |
|
| 27 |
-def get_latest_app(): |
|
| 27 |
+def get_latest_app(src=0): |
|
| 28 | 28 |
""" 获取最新 APP 信息 """ |
| 29 |
- return json.loads(r.get(LATEST_APP_INFO) or '{}') or set_latest_app()
|
|
| 29 |
+ return json.loads(r.get(LATEST_APP_INFO % src) or '{}') or set_latest_app(src)
|
@@ -48,4 +48,4 @@ SYSTEM_MESSAGE_DELETED_INFO = 'system:message:deleted:info:%s' # STRING,系 |
||
| 48 | 48 |
GUEST_ENTRANCE_CONTROL_INFO = 'guest:entrance:control:info' # STRING,游客入口控制信息 |
| 49 | 49 |
|
| 50 | 50 |
# APP 相关 |
| 51 |
-LATEST_APP_INFO = 'latest:app:info' # STRING,最新 APP 信息 |
|
| 51 |
+LATEST_APP_INFO = 'latest:app:info:%s' # STRING,最新 APP 信息,src |